﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace iLangl
{
	public interface IAlertManager
	{
		void SetAlertDAL(IAlertDAL alertDAL);

		ISerializedAlert CreateSerializedAlert();
		ISerializedAlert CreateSerializedAlert(IAlert alert);

		IAlert CreateAlert(object source);
		IAlert CreateAlert(object source, IList<IError> errors);
		IAlert CreateAlert(object source, Exception Exception);

		void RaiseAlert(IAlert alert);

		void AddNotificationProvider(IAlertNotificationProvider notificationProvider);
		void RemoveNotificationProvider(IAlertNotificationProvider notificationProvider);

		IAlertNotificationProvider[] NotificationProviders { get; }


		void RaiseAlert(Exception ex);
	}
}
